// File:     Blob.hpp
//
// Modified: 2011 Jan. 27
//
// 
//


#ifndef _BLOB_HPP_
#define _BLOB_HPP_

#include <opencv/cv.h>
#include <opencv/highgui.h>
#include <iostream>
#include <string>

using namespace std;

class Blob {

public:
			Blob::Blob(char* imgName);
			// @des:
			// @input:
			// @output:

			Blob::~Blob();
			// @des:
			// @input:
			// @output:
		
			Blob* Blob::operator=(Blob& otherBlob);
			// @des:
			// @input:
			// @output:

			void Blob::setHSV();
			// @des:
			// @input:
			// @output:

			void Blob::setImg(const char* c);
			// @des:
			// @input:
			// @output:

			void Blob::setHue();
			// @des:
			// @input:
			// @output:

			void Blob::setKernel(int cols = 3, int rows = 3, int x_coord = 1, int y_coord = 1, int shape = 0);
			// @des:
			// @input:
			// @output:

			void Blob::cancelNoise(int morphology = 2 , int smooth = 2);
			// @des:
			// @input:
			// @output:

			IplImage* Blob::getHue();
			// @des:
			// @input:
			// @output:


			IplImage* Blob::getImg();
		
		
private:
			IplImage* img_;		// Image object (for now this will be a one channel gray scale image)
			IplImage* hsv_;		// Image object for the HSV channels
			IplImage* h_;		// Hue channel image (single channel)
			IplConvKernel* kernel_;		// Convolution

};

#endif